# 作者： 迷路的小怪兽
# 创建时间： 2024/3/25 23:35
import json

from mitmproxy import http
from filter import Filter
from data2conf import DataToConfig
"""
注意：请求与响应是代理分开抓的，所以不是一个时间保存的，需要分开保存，请求用w，响应用a
"""

domain_filter = Filter('fanyi.baidu.com')

def request(flow: http.HTTPFlow):
    if domain_filter.is_target(flow):
        # 组装请求信息，先写到配置文件中，等待响应数据补充完整后，最后使用统一转换方法进行转换
        # mitmdump怎么只过滤XHR的请求!!!!!!!---不清楚，目前暂时不影响性能
        # 各种请求参数方式的参数获取----目前先支持json的post和application/x-www-form-urlencoded的post与get
        # 代理设置勾选项去掉
        url = flow.request.url
        method = flow.request.method
        headers = flow.request.headers
        data = flow.request.get_text()
        conf = DataToConfig(url, method, headers, data)
        conf.data_to_json()


# def response(flow: http.HTTPFlow):
#     if domain_filter.is_target(flow):
#         # 组装响应信息，写到配置文件中，根据url等规则找对应请求数据保存的文件进行追加？
#         with open(f'./{flow.request.url.split("/")[-1]}.txt', 'a', encoding='utf-8') as fp:
#             fp.write('#' * 50 + '\n')
#             fp.write('response:' + '\n')
#
#             fp.write(str(flow.response.status_code) + '\n')
#             fp.write(str(flow.response.headers) + '\n')
#             fp.write(str(flow.response.text) + '\n')


addons = [
    (request, "Print request info"),
    # (response, "Print response info"),
]